Perubahan data jarang datang sendirian: transfer harus mendebit satu akun dan mengkredit akun lain, dan pesanan harus memesan stok serta mencatat pembayaran. Jika sistem berhenti di tengah jalan, basis data akan menggambarkan dunia yang tidak pernah ada. Sebuah transaksi adalah jawaban basis data atas masalah itu — rangkaian satu atau lebih operasi yang diperlakukan oleh basis data sebagai satu unit kerja tunggal yang tak terpisahkan.
Semuanya, atau tidak sama sekali
Di dalam transaksi, setiap operasi menjadi bagian dari satu hasil akhir. Basis data tidak pernah menampilkan keadaan akhir di mana hanya sebagian transaksi yang terjadi. Ilustrasi klasiknya adalah transfer antara dua rekening bank: kurangi saldo rekening sumber, lalu tambah saldo rekening tujuan. Jika hanya langkah pertama yang berhasil, uang akan hilang; jika hanya langkah kedua, uang akan muncul entah dari mana. Membungkus kedua langkah dalam satu transaksi menghilangkan kedua kemungkinan tersebut.
Jaminan semua-atau-tidak-sama-sekali ini disebut atomisitas. Commit adalah tindakan yang membuat perubahan transaksi menjadi permanen; transaksi yang tidak pernah di-commit tidak meninggalkan jejak sama sekali. Durabilitas menambahkan bagian terakhir: setelah commit berhasil dikembalikan, perubahan tetap bertahan bahkan jika mesin kehilangan daya sesaat setelahnya.
Transaksi adalah sebuah batas
Akan membantu jika membayangkan transaksi sebagai batas yang ditarik di sekitar sekelompok pernyataan. Sebelum dan sesudah batas tersebut, data mematuhi aturan yang ditetapkan oleh struktur. Di dalam batas itu, keadaan antara memang ada — satu rekening sudah didebit sementara rekening lainnya belum dikredit — tetapi keadaan tersebut bersifat privat bagi transaksi tersebut. Pernyataan berikutnya di sesi lain tidak menganggapnya sebagai kebenaran.
Dua tugas sekaligus
Oleh karena itu, transaksi menjalankan dua tugas. Yang pertama adalah penanganan kegagalan: jika proses crash, koneksi terputus, atau pernyataan memunculkan galat, basis data dapat memulihkan keadaan yang ada sebelum transaksi dimulai. Yang kedua adalah kontrol visibilitas: selama pekerjaan berlangsung, pembaca lain terlindung dari hasil yang belum selesai. Kedua tugas ini saling berkaitan tetapi tidak identik — atomisitas menentukan apakah perubahan disimpan, sedangkan visibilitas diatur oleh isolasi, yaitu pengaturan yang mengontrol seberapa besar transaksi yang berjalan bersamaan dapat saling melihat satu sama lain.
